/**
 * Copyright (c) 2017 ShopJsp. All Rights Reserved.
 * ============================================================================
 * 版权所有 2011 - 今 北京华宇盈通科技有限公司，并保留所有权利。
 * ----------------------------------------------------------------------------
 * 提示：在未取得SHOPJSP商业授权之前，您不能将本软件应用于商业用途，否则SHOPJSP将保留追究的权力。
 * ----------------------------------------------------------------------------
 * 官方网站：http://www.shopjsp.com
 * ============================================================================
 * @author 张丁方
 * @CreateTime 2017-3-31 13:28:23
 */
package com.hyyt.shopjsp.finance.service.imp;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import com.hyyt.shopjsp.finance.dao.ShopRechargeDAO;
import com.hyyt.shopjsp.finance.pojo.ShopFundDetail;
import com.hyyt.shopjsp.finance.pojo.ShopRecharge;
import com.hyyt.shopjsp.finance.service.IShopRechargeService;
import com.hyyt.shopjsp.util.common.Utils;
import com.hyyt.shopjsp.util.number.SerialNumberUtil;

@Service
public class ShopRechargeService implements IShopRechargeService {
    private static  final Logger logger = Logger.getLogger(IShopRechargeService.class);

    @Resource
    private ShopRechargeDAO shopRechargeDAO;
    @Resource
    private ShopFundDetailService shopFundDetailService;
    /**
     * 保存SHOP_充值记录表
     *
     * @param shopRecharge SHOP_充值记录表
     * @return 保存后的SHOP_充值记录表
     */
    @Override
    public void saveShopRecharge(ShopRecharge shopRecharge) {
        shopRechargeDAO.insert(shopRecharge);
    }

    /**
     * 更新SHOP_充值记录表
     *
     * @param shopRecharge SHOP_充值记录表
     * @return 更新后的SHOP_充值记录表
     */
    @Override
    public void updateShopRecharge(ShopRecharge shopRecharge) {
        shopRechargeDAO.update(shopRecharge);
    }

    /**
     * 删除指定ID的SHOP_充值记录表
     *
     * @param id SHOP_充值记录表ID
     */
    @Override
    public void deleteShopRecharge(Integer id) {
        shopRechargeDAO.delete(id);
    }

    /**
     * 删除指定ID集合的SHOP_充值记录表
     *
     * @param ids SHOP_充值记录表ID集合
    */
    public void deleteShopRecharge(Collection<Integer> ids){
        shopRechargeDAO.batchDelete(ids);
    }

    /**
     * 根据ID加载一个SHOP_充值记录表
     *
     * @param id SHOP_充值记录表ID
     * @return SHOP_充值记录表
     */
    @Override
    public ShopRecharge loadShopRecharge(Integer id) {
        return shopRechargeDAO.load(id);
    }

    /**
    * 查询所有的SHOP_充值记录表，通常有最多取30000条记录的限制
    *
    * @return 所有的SHOP_充值记录表，通常有最多取30000条记录的限制
    */
    @Override
    public List<ShopRecharge> queryAllShopRecharge() {
        return shopRechargeDAO.queryAll();
    }

    /**
     * 查询SHOP_充值记录表
     *
     * @param params 查询参数，为key-value形式
     * @return SHOP_充值记录表集合
     */
    @Override
    public List<ShopRecharge> queryShopRecharge(Map<String, Object> params) {
        return shopRechargeDAO.query(params);
    }

    /**
     * 查询SHOP_充值记录表
     *
     * @param params   查询参数，没有则传null,分页参数key为“sortColumns”
     * @param startRow 起始行数（不含起始行的数据）
     * @param rowSize  要查询记录数
     * @return SHOP_充值记录表集合
     */
    @Override
    public List<ShopRecharge> queryShopRecharge(Map<String, Object> params, int startRow, int rowSize) {
        return shopRechargeDAO.query(params, startRow, rowSize);
    }

    /**
     * 统计SHOP_充值记录表
     *
     * @param params 查询参数，没有则传null,分页参数key为“sortColumns”
     * @return 结果集记录数
     */
    @Override
    public int countShopRecharge(Map<String, Object> params) {
        return shopRechargeDAO.count(params);
    }

     /**
     * 用户充值:后台普通充值
     * @param customerId
     * @param rechargeAmount
     * @return
     */
	@Override
	public boolean saveRechargeMoney(String customerId, BigDecimal rechargeAmount) {
		boolean flag1=false;
		ShopRecharge recharge=new ShopRecharge();//充值记录
		recharge.setCustomerId(Integer.valueOf(customerId));
		recharge.setRechargeAmount(rechargeAmount);
		recharge.setRechargeCode(SerialNumberUtil.orderSnNumber());
		Timestamp date =new Timestamp(System.currentTimeMillis()); //获取timestamp
		recharge.setRechargeTime(date);
		recharge.setRechargeType(3);// 1:普通充值  2:用户中心普通充值 3:后台普通充值
		recharge.setState(1);// 0.未支付 1.已支付
		recharge= shopRechargeDAO.insert(recharge);
		if(Utils.objectIsNotEmpty(recharge)){
			flag1=true;
			ShopFundDetail fundDetail = new ShopFundDetail();
			try {
				fundDetail.setCustomerId(Integer.parseInt(customerId));
				fundDetail.setOrdersNo("");
				fundDetail.setFundDetailsCode(recharge.getRechargeCode());
				fundDetail.setAmount(recharge.getRechargeAmount());
				fundDetail.setFundDetailsType(1);	//消费类型 1收入 2支出
				Timestamp transactionTime =new Timestamp(System.currentTimeMillis()); //获取timestamp
				fundDetail.setTransactionTime(transactionTime);
				fundDetail.setSource(1);			//来源 充值
				shopFundDetailService.saveShopFundDetail(fundDetail);
			} catch (Exception e) {
				logger.error("充值失败");
			}
		}
		return flag1;
	}
}